package com.fqgj.xjd.user.client;
/**
 * Created by zhangxingyun on 17/7/23.
 */

import com.fqgj.common.api.Page;
import com.fqgj.common.api.Response;
import com.fqgj.xjd.user.client.request.*;
import com.fqgj.xjd.user.client.response.*;

import java.util.List;

/**
 * @ClassName:
 * @Description: 用户行为信息维护服务
 * @Author zhangxingyun
 * @Create 2017-07-23 17:09
 */
public interface UserBehaviorService {

    /**
     * 获取用户最新GPS信息
     *
     * @param userCode
     * @return
     */
    Response<UserGps> getLatestUserGps(String userCode);


    /**
     * 保存GPS信息
     *
     * @param userCode
     * @param usergps
     * @return
     */
    Response<Boolean> addUserGps(String userCode, UserGps usergps);


    /**
     * 获取用户最新Wi-Fi信息
     *
     * @param userCode
     * @return
     */
    Response<UserWifi> getLatestUserWifi(String userCode);


    /**
     * 保存客户WI_FI信息
     *
     * @param userCode
     * @param userWifi
     * @return
     */
    Response<Boolean> addUserWifi(String userCode, UserWifi userWifi);

    Response<Boolean> batchAddWifi(List<UserWifi> userWifi);


    /**
     * 保存客户注册信息
     *
     * @param userCode
     * @param userAppInfo
     * @return
     */
    Response<Boolean> addUserRegister(String userCode, UserAppInfo userAppInfo);


    /**
     * 更新客户注册信息
     *
     * @param userCode
     * @param userAppInfo
     * @return
     */
    Response<Boolean> updateUserRegister(String userCode, UserAppInfo userAppInfo);


    /**
     * 更新客户客户号信息
     *
     * @param userCode
     * @param clientId
     * @return
     */
    Response<Boolean> updateOrAddUserClientIdByUserCode(String userCode, String clientId);


    /**
     * 根据客户号获取注册信息
     *
     * @param clientId
     * @return
     */
    Response<List<UserBehaviorRegister>> getUserRegisterByClientId(String clientId);


    /**
     * 分页查询客户ID列表
     *
     * @param page
     * @return
     */
    Response<List<UserBehaviorRegister>> getUserRegisterListByPage(Page page);


    /**
     * 保存用户反馈
     *
     * @param userCode
     * @param title
     * @param content
     * @return
     */
    Response<Boolean> saveFeedback(String userCode, String title, String content);

    /**
     * 保存用户反馈【new】
     *
     * @param userFeedBackRequest
     * @return
     */
    Response<Boolean> saveFeedback(UserFeedBackRequest userFeedBackRequest);

    /**
     * 回复用户反馈
     *
     * @param userFeedBackRequest
     * @return
     */
    Response<Boolean> updateFeedback(UserFeedBackAnswerRequest userFeedBackRequest);

    /**
     * 回复用户反馈【new】
     *
     * @param userFeedBackRequest
     * @return
     */
    Response<Boolean> answerFeedback(UserFeedBackAnswerRequest userFeedBackRequest);

    /**
     * 分页查询用户反馈信息
     *
     * @param userFeedbackListRequest
     * @return
     */
    Response<UserFeedbackList> getUserFeedbackListByPage(UserFeedbackListRequest userFeedbackListRequest);

    /**
     * 根据userCode查询反馈列表
     *
     * @param userCode
     * @return
     */
    Response<UserFeedbackList> getUserFeedbackListByUserCode(String userCode);

    /**
     * 根据feedbackId查询用户反馈信息
     *
     * @param feedbackId
     * @return
     */
    Response<UserFeedBackRO> getUserFeedbackListId(Long feedbackId);

    /**
     * 用户困难反馈
     *
     * @param userDifficultiesFeedBackRequest
     * @return
     */
    Response<Boolean> saveDifficultiesFeedback(UserDifficultiesFeedBackRequest userDifficultiesFeedBackRequest);


    /**
     * @param userCode
     * @return
     */
    Response<UserBehaviorRegister> getRegisterByUserCode(String userCode);

    /**
     * 从注册表中获取注册渠道
     *
     * @return
     */
    Response<List<String>> getLatestChannelFromRegister(Integer hour);

    /**
     * 保存同盾保镖信息
     */
    Response<Boolean> addTongDunBodyguardInfo(TongDunBodyguard tongDunBodyguard);

    /**
     * 获取用户是否登录过
     */
    Response<Boolean> getUserWhetherLogin(String userCode);

    /**
     * 保存用户日活行为数据
     *
     * @param userDailyActivityInfo
     * @return
     */
    Response<Boolean> insertUserDailyActivityInfo(UserDailyActivityInfo userDailyActivityInfo);

    /**
     * 保存用户埋点事件
     *
     * @param userBehaviorEventRequest
     * @return
     */
    Response<Boolean> insertUserBehaviorEvent(UserBehaviorEventRequest userBehaviorEventRequest);

    /**
     * 用户埋点
     *
     * @param userBehaviorEvent
     * @return
     */
    Response<Boolean> addUserEventTrack(UserBehaviorEvent2Request userBehaviorEvent);

    /**
     * 添加三方调用记录
     * @param thirdCallHistoryRequest
     * @return
     */
    Response<Boolean> addThirdCallHistory(ThirdCallHistoryRequest thirdCallHistoryRequest);

    /**
     * 保存撞库结果
     * @param userOpenBlackListRequest
     * @return
     */
    Response<Boolean> saveUserOpenBlack(UserOpenBlackListRequest userOpenBlackListRequest);

}
